/*
 * TCSS 305A - Spring 2012
 * Project Tetris
 */

package model;

/**
 * Defines behaviors Tetris pieces.
 * 
 * @author Alan Fowler
 * @version Spring 2012
 */
public interface Piece
{
  
  /*
   * Classes which implement this interface will produce mutable objects.
   * Commands in implementing classes modify field values and return void.
   */

  /** Shifts the piece one space to the left. */
  void moveLeft();

  /** Shifts the piece one space to the right. */
  void moveRight();

  /** Shifts the piece one space down. */
  void moveDown();

  /** Rotates the piece one quarter turn CCW. */
  void rotate();

  /**
   * @return the x coordinate of this Piece.
   */
  int getX();

  /**
   * @return the y coordinate of this Piece.
   */
  int getY();

}
